package com.yiyi.util;

import com.alibaba.fastjson.JSONObject;
import com.yiyi.config.JwtConfigProperties;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;


import java.util.Date;
import java.util.List;

/**
 * User: YIYI
 * Date: 2021-08-11
 * Time: 8:50
 * Description:jwt 工具类
 */

public class JWTUtil {

    /**
     * 生成签名,5min后过期
     *
     * @param username 用户名
     * @return 加密的token
     */
    public static String sign(String username, JwtConfigProperties jwtConfigProperties, List<String> authorities) {
        Date date = new Date(System.currentTimeMillis() + jwtConfigProperties.getExpire());
        String token = Jwts.builder()
                //主题 放入用户名
                .setSubject(username)
                //自定义属性 放入用户拥有请求权限
                .claim("authorities", JSONObject.toJSONString(authorities))
                //失效时间
                .setExpiration(date)
                //签名算法和密钥
                .signWith(SignatureAlgorithm.HS512, jwtConfigProperties.getSecret())
                .compact();
        return token;
    }
}
